/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package BDelegate;

import AccesoEJBs.EJBEmpresas;
import AccesoEJBs.EJBPublicidad;
import AccesoEJBs.EJBUsuarios;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.NamingException;

/**
 *
 * @author Damc
 */
public class BussinesDelegate {

    public int darFilas(int rol){
        int r=5;
        if(rol==1)r=3;
        if(rol==0)r=2;
        return r;
    }
    public VO.Datoscliente infousuario(String idUsuario) throws Exception{
        EJBUsuarios us=new EJBUsuarios();
        return us.traerdatosusuario(idUsuario);
    }
    public int loggin(String name, String pass) throws Exception{
        EJBUsuarios us=new EJBUsuarios();

        int num=us.traerusuario(name).getIdTipo().getIdtiposUsuarios();
        return num;
    }
    public boolean existe(String name, String pass) throws Exception{
        EJBUsuarios us=new EJBUsuarios();
        try{
        return us.verificarlogin(name, pass);
        }catch(Exception ex){
            throw new Exception("ERROR: No se pudo crear el usuario");
        }
    }

    //cambiar para que retorne datos
    public void datosUsuario(String idUsuario){
        //return
    }

    public boolean crearUsuario(String idUsuario, String pass1,String pass2, String idTipo, String nombre, String apellido, String mail) throws Exception{
        System.out.println(mail);
        System.out.println(pass1);
        if(idUsuario==null||idTipo==null|| nombre==null||apellido==null||mail==null
                ||pass1.equals("d41d8cd98f00b204e9800998ecf8427e")||pass2.equals("d41d8cd98f00b204e9800998ecf8427e")
                ||idUsuario.equals("")||idTipo.equals("")||nombre.equals("")||apellido.equals("")||mail.equals("")){
            throw new NullPointerException("ERROR: Todos los campos son obligatorios");
        }
        if(!pass1.equals(pass2)){
            throw new IllegalArgumentException("ERROR: Las contraseñas no son iguales");
        }
        EJBUsuarios us=new EJBUsuarios();
        int tipo=Integer.parseInt(idTipo);
        try{
            
            return us.crearusuario(idUsuario, pass2, tipo, nombre, apellido, mail);
        }catch(Exception ex){
            throw new Exception("ERROR: No se pudo crear el usuario");
        }
    }
    //si es true se cambia el pass
    private boolean verificacion(String idUsuario, String pass, String pass0, String pass1,String pass2, String idTipo, String nombre, String apellido, String mail)throws Exception{
        boolean cambio=true;
        if(idUsuario==null|| nombre==null||apellido==null||mail==null
                ||idUsuario.equals("")||idTipo.equals("")||nombre.equals("")||apellido.equals("")||mail.equals("")){
            throw new NullPointerException("ERROR: Hay campos vacios");
        }
        if(!pass1.equals(pass2)){
            throw new Exception("ERROR: Las contraseñas no coinciden");
        }
        if(!pass0.equals("d41d8cd98f00b204e9800998ecf8427e")&&!pass0.equals(pass)){
            throw new Exception("ERROR: La contraseña es incorrecta");
        }
        if(pass0.equals(pass)&&(pass1.equals("d41d8cd98f00b204e9800998ecf8427e")&&pass2.equals("d41d8cd98f00b204e9800998ecf8427e"))){
            throw new Exception("ERROR: La nueva contraseña no puede ser vacia");
        }
        if(pass0.equals("d41d8cd98f00b204e9800998ecf8427e")&&(pass1.equals("d41d8cd98f00b204e9800998ecf8427e")&&pass2.equals("d41d8cd98f00b204e9800998ecf8427e"))){
            cambio=false;
        }

        return cambio;
    }
    public boolean editarUsuario(String idUsuario, String pass, String pass0, String pass1,String pass2, String idTipo, String nombre, String apellido, String mail)throws Exception{
        boolean edit;
        boolean aux=true;
        edit = verificacion(idUsuario, pass, pass0, pass1, pass2, idTipo, nombre, apellido, mail);
        String pasu="";
        if(edit){
            pasu=pass1;
            //agregar funcion de edicion de usuario
            
        }else{pasu=pass;}
        //agreagr funcion de edicion de datos
            EJBUsuarios us = new EJBUsuarios();
            
            return us.editarusuario(idUsuario, pasu, nombre, apellido, mail);
    }

    public boolean crearEmpresa(String idUsuario, String idEmpresa, String idCategoria, String banner, String url, String telefono, String mail, String direccion, String descripcion) throws Exception{
        if(idUsuario==null||idEmpresa==null|| idCategoria==null||banner==null||url==null||telefono ==null||mail==null||direccion==null||descripcion==null
                ||idUsuario.equals("")||idEmpresa.equals("")||idCategoria.equals("")||banner.equals("")||url.equals("")||telefono.equals("")||mail.equals("")||direccion.equals("")||descripcion.equals("")){
            throw new NullPointerException("ERROR: Todos los campos son obligatorios");
        }
        EJBEmpresas emp = new EJBEmpresas();
        return emp.crearempresa(idEmpresa, idUsuario, Integer.parseInt(idCategoria), banner, url, telefono, direccion, mail, descripcion);
    }

    public boolean editarEmpresa(String idUsuario, String idEmpresa, String idCategoria, String banner, String url, String telefono, String mail, String direccion, String descripcion) throws Exception{
        if(idUsuario==null||idEmpresa==null|| idCategoria==null||banner==null||url==null||telefono ==null||mail==null||direccion==null||descripcion==null
                ||idUsuario.equals("")||idEmpresa.equals("")||idCategoria.equals("")||banner.equals("")||url.equals("")||telefono.equals("")||mail.equals("")||direccion.equals("")||descripcion.equals("")){
            throw new NullPointerException("ERROR: Todos los campos son obligatorios");
        }
        EJBEmpresas emp = new EJBEmpresas();
        return emp.editarempresa(idEmpresa, Integer.parseInt(idCategoria), banner, url, telefono, direccion, mail, descripcion);
    }

    public List<String> Listapublicidad(int tipo) throws Exception{
        List<String> publi = new ArrayList();
        EJBPublicidad a=new EJBPublicidad();
        try {
            publi = a.buscarpublicidad(tipo);
        } catch(Exception ex){
            throw ex;
            //throw new Exception("ERROR: No se pudo buscar la publicidad");
        }
        return publi;
    }

    public List<String> ListaEmpresasdeUsuario(String idcliente) throws Exception{
        List<String> publi = new ArrayList();
        EJBEmpresas ee = new EJBEmpresas();
        try {
            publi = ee.BuscarporUsuario(idcliente);
        } catch (Exception ex) {
          throw new Exception("ERROR: No se pudo traer la lista de empresas");
        }
        return publi;
    }

    public boolean crearContacto(String idusuario, String idempresa, String telefono, String mail, String celular, String direccion) throws Exception{
        EJBEmpresas ee = new EJBEmpresas();
        int tel=0;
        if(telefono.equals("")){
            throw new Exception("ERROR: El telefono es obligatorio");
        }
        try{
            tel=Integer.parseInt(telefono);
        }catch(Exception e){
            throw new Exception("ERROR: El telefono solo puede ser numerico");
        }
        return ee.crearcontacto(idusuario, idempresa, celular, direccion, tel, mail);
    }

    public boolean datosnonulos(String idempresa, String mail, String url) throws Exception{
        if(idempresa.equals("")||mail.equals("")||idempresa==null||mail==null){
            throw new Exception("ERROR: El nombre de la empresa y el mail son obligatorios");
        }
        EJBEmpresas ee = new EJBEmpresas();
        try{
            if(ee.BuscarporID(idempresa).getIdEmpresas().equals(idempresa)){
                return false;
            }else{
                return true;
            }
            //throw new Exception("ERROR: La empresa ya existe");
        }catch(Exception e){
            return true;
        }
        //return true;
    }

    public boolean datosnonulos2(String idempresa, String mail, String url) throws Exception{
        if(idempresa.equals("")||mail.equals("")||idempresa==null||mail==null){
            throw new Exception("ERROR: El nombre de la empresa y el mail son obligatorios");
        }

            return true;
        
        //return true;
    }
    public VO.Empresas datosempresa(String id) throws Exception{
        EJBEmpresas ee = new EJBEmpresas();
        try{
            return ee.BuscarporID(id);
        }catch(Exception e){
            throw new Exception("ERROR: La empresa solicitada no existe");
        }
    }

    public List<String> tipoPub() throws Exception{
        EJBPublicidad ep = new EJBPublicidad();
        try{
        List<VO.Tipopago> vt= ep.BuscarTipoPago();
        List<String> tip = new ArrayList<String>();
        for(int i=0; i<vt.size();i++){
            tip.add(vt.get(i).getIdtipoPago()+"");
            tip.add(vt.get(i).getNombre());
            tip.add(vt.get(i).getCosto()+"");
        }
        return tip;
        }catch(Exception e){
            throw new Exception("ERROR: No se encuentran las categorias");
        }

    }

    public boolean crearPago(String idempresa, String fechai, String fechaf, String tipo, String tarjeta, String pass) throws Exception{
        if(fechai.equals("")||fechaf.equals("")||tarjeta.equals("")||pass.equals("d41d8cd98f00b204e9800998ecf8427e"))throw new Exception("ERROR: Campos vacios");
        Date fecha1=Fecha(fechai);
        Date fecha2=Fecha(fechaf);
        if(fecha1.compareTo(fecha2)>0){
            throw new Exception("ERROR: La fecha final tiene que ser despues de la inicial");
        }
        EJBPublicidad ep = new EJBPublicidad();
        Calendar fecha = Calendar.getInstance();
        Date hoy = new Date(fecha.get(Calendar.YEAR)-1900, fecha.get(Calendar.MONTH), fecha.get(Calendar.DATE));
        if(hoy.compareTo(fecha1)>0){
            throw new Exception("ERROR: La fecha inicial no puede ser antes de mañana");
        }
        int idtipo = Integer.parseInt(tipo);
        
        return ep.crearpago(idempresa, idtipo, 1, hoy, fecha1, fecha2);
    }

    private static Date Fecha(String fechax){
        Date fecha = new Date();
        String [] fecha1 = fechax.split("/");
        fecha.setDate(Integer.parseInt(fecha1[1]));
        fecha.setMonth(Integer.parseInt(fecha1[0])-1);
        int ano =Integer.parseInt(fecha1[2])-1900;
        fecha.setYear(ano);
        return fecha;
    }
}
